/*
 *
 *  * Copyright (c) 2024 Huawei Technologies Co., Ltd.
 *  * openFuyao is licensed under Mulan PSL v2.
 *  * You can use this software according to the terms and conditions of the Mulan PSL v2.
 *  * You may obtain a copy of Mulan PSL v2 at:
 *  *          http://license.coscl.org.cn/MulanPSL2
 *  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 *  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 *  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 *  * See the Mulan PSL v2 for more details.
 *
 */

package errors

import (
	"fmt"
	"net/http"
)

// TokenExpiredError is an error returned on token expiration
type TokenExpiredError struct {
	Message  string
	Response *http.Response
}

func (e *TokenExpiredError) Error() string {
	if e.Message == "" {
		return e.Message
	} else {
		return "token has expired"
	}
}

// HttpResponseNotOKError is an error returned on http response with http status other than 200
type HttpResponseNotOKError struct {
	Message string
}

func (e *HttpResponseNotOKError) Error() string {
	return e.Message
}

// InvalidJsonHttpBodyError is an error returned on http response with invalid json response body
type InvalidJsonHttpBodyError struct {
	Message string
}

func (e *InvalidJsonHttpBodyError) Error() string {
	return e.Message
}

// FieldNotFoundError is an error returned on http response with field that can't be found
type FieldNotFoundError struct {
	Message string
	Field   string
}

func (e *FieldNotFoundError) Error() string {
	return e.Message
}

// RegexError error struct for regular expression error
type RegexError struct {
	Message string
}

func (e *RegexError) Error() string {
	return fmt.Sprintf("RegexError: %s", e.Message)
}
